#include "app_common.h"
#include "pthread.h"
#include "mqueue.h"

mqd_t mq;
void *fun1(void *arg)
{
    // while (1)
    //{
    char buff[1024];
    ssize_t size = mq_receive(mq, buff, sizeof(buff), NULL);
    if (size == -1)
    {
        log_error("mq_receive error");
        return NULL;
    }
    log_info("mq_receive: %.*s", size, buff);
    // }
}

int main(int argc, char const *argv[])
{
    pthread_t id;
    pthread_create(&id, NULL, fun1, NULL);

    // 创建消息队列
    struct mq_attr attr;
    attr.mq_flags = 0;      // 读取消息时, 阻塞式读取
    attr.mq_maxmsg = 10;    // 最大消息数
    attr.mq_msgsize = 1024; // 每条消息最大字节数

    mq = mq_open("/mq_test", O_CREAT | O_RDWR, 0666, &attr);
    if (mq == -1)
    {
        log_error("mq_open error");
    }
    log_info("mq_open ok");

    // 主线程给子线程发送消息
    mq_send(mq, "hello world", strlen("hello world"), 0);
    mq_send(mq, "hello world", strlen("hello world"), 0);

    pthread_join(id, NULL);

    mq_close(mq);
   // mq_unlink("/mq_test");

    return 0;
}
